今天我們要來分享列表的操作,分享之前不免要介紹一下list(列表)的特點
在學會更進階的操作之前,先來分享幾個常用的基本操作
append():將一筆資料加在目前list的最後面。
a = [1,2,3,4]
a.append("鐵人賽") # str
a.append({1:"鐵人賽"}) # dict
a.append(("鐵","人","賽")) # tuple
a.append({"鐵","人","賽"}) # set
a.append(['鐵', '人', '賽']) # lisr
# [1, 2, 3, 4, '鐵人賽', {1: '鐵人賽'}, ('鐵', '人', '賽'), {'賽', '人', '鐵'}, ['鐵', '人', '賽']]
insert:指定特定索引位置加上一筆資料。
a = [1,2,3,4]
a.insert(0, "鐵人賽") # 指定在索引0,加上str
a.insert(0, {1:"鐵人賽"}) # 指定在索引0,加上dict
a.insert(0, ("鐵","人","賽")) # 指定在索引0,加上tuple
a.insert(0, {"鐵","人","賽"}) # 指定在索引0,加上set
a.insert(0, ["鐵","人","賽"]) # 指定在索引0,加上list
# [['鐵', '人', '賽'], {'鐵', '賽', '人'}, ('鐵', '人', '賽'), {1: '鐵人賽'}, '鐵人賽', 1, 2, 3, 4]
extend:將兩筆list的資料合併
a = [1,2,3,4]
b = ["鐵","人","賽"]
a.extend(b)
# [1, 2, 3, 4, '鐵', '人', '賽']
這幾種用法都是使用原有資料修改,list 也可以使用運算子相加相乘,只是會產生與原先位址不同的新list,來看看範例程式碼:
a = [1,2,3,4]
b = ["鐵","人","賽"]
a = a + b
# [1, 2, 3, 4, '鐵', '人', '賽']
b = b * 2
# ['鐵', '人', '賽', '鐵', '人', '賽']
在這一年的經驗,我發現後端常常需要將資料進行處理成專案文件所需的格式,而列表也是我們經常會使用的格式,所以我們要學,會如何簡單又快速的將資料處理成list。
而列表推導式就能達到我們要的目的,是將一段簡單宣告list的程式碼,變成用一行寫出來,我們來看一下程式碼:
import time
start = time.time()
a = []
for i in range(0, 11):
a.append(i)
end = time.time()
print("{:.10f} 秒".format(end-start))
有興趣的夥伴底下也可以都加上start跟end的測試時間的效率
這是使用for迴圈的方法,把0-10加入到list的一段程式碼
如果我們改成使用列表推導式:
a = [i for i in range(0, 11)]
原本三行的空間,我們使用一行就可以完成,並且用列表推導式相較於第一種寫法的速度更快,可謂是「省時省空間可讀性高」
除了可以加上簡單的for迴圈的,我們甚至還可以加上if判斷式,我們來看一下範例程式碼:
a = []
for i in range(0, 11):
if i%2 == 0:
a.append(i)
如果我們改成使用列表推導式:
a = [i for i in range(0, 11) if i%2==0]
列表推導式還能夠將巢狀list展開成一層等組合,大方向就是巢狀的程式碼改成一行,從左寫到右,雖然列表推導式看似簡單,但是在我們應用上處理資料時是滿常使用到的,所以挺重要的,像是常常可能要從其他的可迭代的資料類型,組成list,就能夠使用到。
上述的用法都是我今年碰到比較常用的部分,當然list除了append、insert、extend這些新增的用法,有新增就會有刪除或者取出。
a = ["鐵", "人", "賽"]
a.remove("人")
# ['鐵', '賽']
a = ["鐵", "人", "賽"]
b = a.pop(0)
print(a)
# ['人', '賽']
print(b)
# 鐵
列表大概就介紹到這,這些東西雖然簡單,確實很重要的基本功,明天我要來分享